package farmacia.dao.controle;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import conexao.banco.banco.CriaConexao;
import farmacia.entidade.usuario.Usuario;

public class UsuarioDao {
	
	private Connection conexao;

    public UsuarioDao() throws SQLException {
        this.conexao = CriaConexao.getConexao();

    }
             // Metodo de inserção em banco de dados mysql
    public void adicionaUsuario(Usuario c1) throws SQLException {
        String sql = "insert  into tb_usuario("
                + "fi_nome,"
                + "fi_senha) values(?,md5(?))";
        
        PreparedStatement stmt = conexao.prepareStatement(sql);

        stmt.setString(1, c1.getFi_nome());
        stmt.setString(2, c1.getFi_senha());
        stmt.executeUpdate();
        stmt.close();

    }

    public void excluirUsuario(Usuario c1) throws SQLException {
        
        String sql = "delete from tb_usuario where fi_idUsuario=?";
        
        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setInt(1, c1.getFi_idUsuario());
        
        stmt.execute();
        stmt.close();
    }

    public void alterarUsuario(Usuario c1) throws SQLException {
        String sql = "UPDATE tb_usuario SET "
                + "fi_nome=?,"
                + "fi_senha=?"
                +"WHERE fi_idUsuario=?";
        
        PreparedStatement stmt = conexao.prepareStatement(sql);
        
                  // setar valores
           
        stmt.setString(1, c1.getFi_nome());
        stmt.setString(2, c1.getFi_senha());     
        stmt.setInt(3, c1.getFi_idUsuario());
        
        
        stmt.executeUpdate();
        stmt.close();

    }

    
    
    
  
    public List<Usuario> getLista(String nome) throws SQLException{
        
    String sql = "select * from tb_usuario where fi_nome like ? ORDER BY nome ASC";
    PreparedStatement stmt = this.conexao.prepareStatement(sql);
    stmt.setString(1, nome);
    ResultSet rs = stmt.executeQuery();
    
    List <Usuario> listaUsuario = new ArrayList<Usuario>();
    
    while (rs.next()){
     
        Usuario c1 = new Usuario();
                c1.setFi_idUsuario(Integer.valueOf(rs.getInt("fi_idUsuario")));
                c1.setFi_nome(rs.getString("fi_nome"));
                c1.setFi_senha(rs.getString("fi_senha"));
                
                 
        listaUsuario.add(c1);
    }    
    rs.close();
    stmt.close();
    
    return listaUsuario;
     
    }

}
